package org.example.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 员工表
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "employee")
public class Employee {
    /**
     * 员工ID
     */
    @TableId(value = "employee_id", type = IdType.INPUT)
    private Integer employeeId;

    /**
     * 员工姓名
     */
    @TableField(value = "employee_name")
    private String employeeName;

    /**
     * 员工工号
     */
    @TableField(value = "employee_id_number")
    private String employeeIdNumber;

    /**
     * 年龄
     */
    @TableField(value = "employee_age")
    private String employeeAge;

    /**
     * 身份证号
     */
    @TableField(value = "employee_number")
    private String employeeNumber;

    /**
     * 电话号码
     */
    @TableField(value = "employee_phone")
    private String employeePhone;

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(value = "employee_birthdate")
    private Date employeeBirthdate;

    /**
     * 户籍类型（农村/城镇）
     */
    @TableField(value = "household_registration")
    private String householdRegistration;

    /**
     * 籍贯
     */
    @TableField(value = "origin")
    private String origin;

    /**
     * 民族
     */
    @TableField(value = "ethnic_group")
    private String ethnicGroup;

    /**
     * 户籍所在地
     */
    @TableField(value = "place_household_registration")
    private String placeHouseholdRegistration;

    /**
     * 常住地址
     */
    @TableField(value = "permanent_address")
    private String permanentAddress;

    /**
     * 政治面貌(中共党员，共青团员，民主党派，群众)
     */
    @TableField(value = "political_appearance")
    private String politicalAppearance;

    /**
     * 婚姻状态(已婚，未婚，已婚未育)
     */
    @TableField(value = "marital_status")
    private String maritalStatus;

    /**
     * 首次参加工作日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(value = "date_participation")
    private Date dateParticipation;

    /**
     * 入职日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(value = "date_of_induction")
    private Date dateOfInduction;

    /**
     * 入职部门
     */
    @TableField(value = "onboarding_department")
    private String onboardingDepartment;

    /**
     * 入职岗位
     */
    @TableField(value = "entry_position")
    private String entryPosition;

    /**
     * 聘用形式
     */
    @TableField(value = "employment_form")
    private String employmentForm;

    /**
     * 正式薪资
     */
    @TableField(value = "official_salary")
    private String officialSalary;

    /**
     * 是否有试用期
     */
    @TableField(value = "whether_probation_period")
    private String whetherProbationPeriod;

    /**
     * 试用期薪资
     */
    @TableField(value = "probationary_salary")
    private String probationarySalary;

    /**
     * 试用期天数
     */
    @TableField(value = "probation_period_time")
    private String probationPeriodTime;

    /**
     * 转正日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(value = "conversion_date")
    private Date conversionDate;

    /**
     * 员工状态（已入职，未入职）
     */
    @TableField(value = "employee_status")
    private String employeeStatus;

    /**
     * 入职申请日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(value = "application_date")
    private Date applicationDate;

    /**
     * 紧急联系人姓名
     */
    @TableField(value = "emergency_contacts_name")
    private String emergencyContactsName;

    /**
     * 与紧急联系人的关系
     */
    @TableField(value = "emergency_contacts_relationship")
    private String emergencyContactsRelationship;

    /**
     * 紧急联系人电话
     */
    @TableField(value = "emergency_contacts_phone")
    private String emergencyContactsPhone;

    /**
     * 参保城市
     */
    @TableField(value = "insured_cities")
    private String insuredCities;

    /**
     * 社保账号
     */
    @TableField(value = "social_security")
    private String socialSecurity;

    /**
     * 公积金账号
     */
    @TableField(value = "accumulation_fund")
    private String accumulationFund;

    /**
     * 银行卡号
     */
    @TableField(value = "bank_card_number")
    private String bankCardNumber;

    /**
     * 开户行
     */
    @TableField(value = "open_an_account")
    private String openAnAccount;

    /**
     * 毕业院校
     */
    @TableField(value = "graduated_school")
    private String graduatedSchool;

    /**
     * 毕业时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField(value = "graduated_time")
    private Date graduatedTime;

    /**
     * 所学专业
     */
    @TableField(value = "major")
    private String major;

    /**
     * 学历
     */
    @TableField(value = "`degree`")
    private String degree;

    /**
     * 部门主管
     */
    @TableField(value = "department_head")
    private String departmentHead;

    /**
     * 部门主管意见
     */
    @TableField(value = "department_head_opinion")
    private String departmentHeadOpinion;

    /**
     * 负责HR
     */
    @TableField(value = "responsible_fo_hr")
    private String responsibleFoHr;

    /**
     * HR确认
     */
    @TableField(value = "hr_confirm")
    private String hrConfirm;

    /**
     * 性别
     */
    @TableField(value = "employee_gender")
    private String employeeGender;

    /**
     * 登录密码
     */
    @TableField(value = "login_password")
    private String loginPassword;
    @TableField(exist = false)
    private Department department;
    @TableField(exist = false)
    private SalaryStructure salaryStructure;
}